package com.qqtech.qquan.mall.service;

import java.math.BigDecimal;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.qqtech.core.frame.service.BaseService;
import com.qqtech.qquan.mall.model.MallCart;
import com.qqtech.qquan.mall.model.MallCartQuery;
import com.qqtech.qquan.mall.model.MallCartVo;

public interface MallCartService extends BaseService<MallCart> {
    /**
     * 添加到购物车
     * @param userId
     * @param productId
     * @param shopId
     * @param quantity
     * @return
     */
    int handleAddProduct2Cart(MallCart cart);
    
    /**
     * 删除购物车商品
     *
     * @param userId
     * @param productId
     * @return
     */
    int handleDeleteProduct(int userId, int productId);
    
    /**
     * 修改购物车商品数量
     *
     * @param userId
     * @param productId
     * @param quantity
     * @return
     */
    int updateQuantity(int userId, Integer productId, int quantity);
    /**
     * 购物车商品数量
     * @param userId
     * @param shopId
     * @return
     */
    int getTotalQuantity(Integer userId, Integer shopId);
    
    /**
     * 购物车商品价格总计
     * @param userId
     * @param shopId
     * @return
     */
    BigDecimal getTotalPrice(Integer userId, Integer shopId);

    /**
	 * 根据供应商查询购物车列表(商城)
	 * 
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<MallCartVo> queryPageBySupplier(MallCartQuery query, Pageable pageable);
	 /**
	 * 根据店铺查询购物车列表(圈商)
	 * 
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<MallCartVo> queryPageByShop(MallCartQuery query, Pageable pageable);
	
	/**
	 * 根据供应商查询购物车数量(商城)
	 * 
	 * @param query
	 * @return
	 */
	public int queryCountBySupplier(MallCartQuery query);
	/**
	 * 根据店铺查询购物车数量(圈商)
	 * 
	 * @param query
	 * @return
	 */
	public int queryCountByShop(MallCartQuery query);
	/**
	 *商家配送时效
	 * @param key
	 * @return
	 */
	public String getDeliverTime(String key);
}